package persistencia;

import java.awt.Color;

import persistencia.PersistenciaException;
import persistencia.Archivo;
import logica.clases.Jugador;
import logica.clases.Partida;
import logica.colecciones.Jugadores;
import logica.colecciones.Mapa;
import logica.colecciones.Partidas;
import logica.datatypes.Partida.DataPartida_R4;
import logica.excepciones.JugadoresException;

public class PruebaPersistencia {
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			System.out.print("Para realizar esta prueba utilizar el archivo original que esta vacio\n");
			Partidas partidas = Partidas.getInstancia();
			
			Jugadores jugadores = new Jugadores(2);
			Jugador jug = new Jugador(1, "DD", Color.blue);
			Jugador jugA = new Jugador(2, "AA", Color.gray);
			jugadores.insertar(jug);
			jugadores.insertar(jugA);
			Partida partida = new Partida("Partida1", jugadores);
			System.out.println(partida.getCodigo());
			partidas.insert(partida);
			
			Jugadores jugadores1 = new Jugadores(3);
			Jugador jug1 = new Jugador(1, "Jose", Color.WHITE);
			jug1.setEnTurno(true);
			Jugador jug2 = new Jugador(2, "Pedro", Color.BLACK);
			Jugador jug3 = new Jugador(2, "Maria", Color.BLUE);
			jugadores1.insertar(jug1);
			jugadores1.insertar(jug2);
			jugadores1.insertar(jug3);
			
			Partida partida1 = new Partida("Partida1", jugadores1);
			
			Jugadores jugadores2 = new Jugadores(5);
			Jugador jug4 = new Jugador(1, "Jose", Color.WHITE);
			Jugador jug5 = new Jugador(2, "Pedro", Color.BLACK);
			Jugador jug6 = new Jugador(3, "Maria", Color.BLUE);
			Jugador jug7 = new Jugador(4, "Juan", Color.CYAN);
			Jugador jug8 = new Jugador(5, "Rosa", Color.GRAY);
			jugadores2.insertar(jug4);
			jugadores2.insertar(jug5);
			jugadores2.insertar(jug6);
			jugadores2.insertar(jug7);
			jugadores2.insertar(jug8);
			Partida partida2 = new Partida("Partida2", jugadores2);
			
			Jugadores jugadores3 = new Jugadores(3);
			Jugador jug9 = new Jugador(2, "Pedro", Color.BLACK);
			Jugador jug10 = new Jugador(2, "Maria", Color.BLUE);
			Jugador jug11 = new Jugador(2, "Rosa", Color.GRAY);	
			jugadores3.insertar(jug9);
			jugadores3.insertar(jug10);
			jugadores3.insertar(jug11);
			Partida partida3 = new Partida("Partida3", jugadores3);
			
			partidas.insert(partida1);
			partidas.insert(partida2);
			partidas.insert(partida3);
			
			System.out.println("Se crearon e insertaron partidas");
			
			System.out.println("Se guarda a disco y se recupera otra vez");
			Persistencia.respaldarPartidas(partidas.getPartidas());
			Persistencia.recuperarPartidas();
			
			System.out.print("\nLas Partidas Almacenadas fueron:");
			DataPartida_R4 dataPartida_R4[] = partidas.listarCodPartidas();
			int cantPart = dataPartida_R4.length;
			for (int i=0; i<cantPart; i++)
				System.out.print("\nCodigo Partida: " + dataPartida_R4[i].getCodigo());
			
			System.out.print("\n\nSe chequeara si hay partida en curso." +
					"\n si no hay, se iniciara una y guardaran los cambios." +
					"\nLuego se levantaran los cambios y verificara que si haya partida en curso...");
			
			System.out.print("\n\nHay partida en curso?: ");
			if(!partidas.hayPartidaEnCurso()){
				System.out.print("No");
				

				Mapa map = Archivo.recuperarPaises();
				System.out.print("\nSe iniciara partida: Partida1");
				partidas.iniciarPartida("Partida1", map);
				Persistencia.respaldarPartidas(partidas.getPartidas());
				System.out.print("\nSe guardaron los cambios");
				Persistencia.recuperarPartidas();
				System.out.print("\nSe recuperaron nuevamente los datos con los cambios introducidos");
				
				System.out.print("\nAhora hay partida en curso?: ");
				if(partidas.hayPartidaEnCurso())
					System.out.print("Si");
				else
					System.out.print("No");
			}else
				System.out.print("Si");
			
		} catch (PersistenciaException e) {
			e.printStackTrace();
		} catch (JugadoresException e) {
			System.out.print(e.darMensaje());
		}
	}

}
